/**
 * 单位信息管理，（添加、编辑、删除）只能在外网操作
 *
 * 添加单位信息
 * 修改单位信息
 * 删除单位信息
 *
 * 查询单位信息列表
 * 分页查询单位信息列表
 * 根据父节点id查询单位信息列表
 * 根据id查询单位信息
 */
package cn.web.tunnelrobot.controller;

import cn.web.tunnelrobot.dto.UnitInfo1;
import cn.web.tunnelrobot.service.UnitInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;

/**
 * 单位信息
 * @version 1.0.0
 *
 */
@RestController
@RequestMapping("/unitInfo")
public class UnitInfoController {
    @Autowired
    private UnitInfoService unitInfoService;

    /**
     * 添加单位信息
     * @param unitInfo
     * @return
     */
    @PostMapping("/addUnitInfo")
    @ResponseBody
    public HashMap<String,Object> addUnitInfo(@RequestBody UnitInfo1 unitInfo){
        return unitInfoService.addUnitInfo(unitInfo);
    }

    /**
     * 修改单位信息
     * @param unitInfo
     * @return
     */
    @PostMapping("/updateUnitInfo")
    @ResponseBody
    public HashMap<String,Object> updateUnitInfo(@RequestBody UnitInfo1 unitInfo){
        return unitInfoService.updateUnitInfo(unitInfo);
    }

    /**
     * 查询单位信息列表
     * @return
     */
    @GetMapping("/getUnitInfoList")
    @ResponseBody
    public HashMap<String,Object> getUnitInfoList(){
        return unitInfoService.getUnitInfoList();
    }

    /**
     * 删除单位信息
     * @param id
     * @param usId
     * @param uiLevel
     * @return
     */
    @DeleteMapping("/deleteUnitInfoByUiId")
    @ResponseBody
    public HashMap<String,Object> deleteUnitInfoByUiId(@RequestParam Integer id,
                                                       @RequestParam Integer usId,
                                                       @RequestParam Integer uiLevel){
        return unitInfoService.deleteUnitInfoByUiId(id,uiLevel,usId);
    }

    /**
     * 分页查询单位信息列表
     * @param companyName
     * @param branchName
     * @param projectName
     * @param workAreaName
     * @param usName
     * @param id
     * @param position
     * @param uiLevel
     * @param pageNo
     * @param pageSize
     * @return
     */
    @GetMapping("/getUnitInfoListPage")
    @ResponseBody
    public HashMap<String,Object> getUnitInfoListPage(@RequestParam(required = false) String companyName,
                                                      @RequestParam(required = false) String branchName,
                                                      @RequestParam(required = false) String projectName,
                                                      @RequestParam(required = false) String workAreaName,
                                                      @RequestParam(required = false) String usName,
                                                      @RequestParam(required = false) Integer id,
                                                      @RequestParam Integer position,
                                                      @RequestParam Integer uiLevel,
                                                      @RequestParam(value = "pageNo", defaultValue = "1", required = false) Integer pageNo,
                                                      @RequestParam(value = "pageSize", defaultValue = "20", required = false) Integer pageSize){
        return unitInfoService.getUnitInfoListPage(companyName,branchName,projectName,workAreaName,usName,id,position,uiLevel,pageNo,pageSize);
    }

    /**
     * 根据父节点id查询单位信息列表
     * @param uiParentId
     * @param uiLevel
     * @return
     */
    @GetMapping("/getUnitInfoListByParentId")
    @ResponseBody
    public HashMap<String,Object> getUnitInfoListByParentId(@RequestParam(required = false) Integer uiParentId,
                                                            @RequestParam Integer uiLevel){
        return unitInfoService.getUnitInfoListByParentId(uiParentId,uiLevel);
    }

    /**
     * 根据id查询单位信息
     * @param uiId
     * @param uiLevel
     * @return
     */
    @GetMapping("/getUnitInfoById")
    @ResponseBody
    public HashMap<String,Object> getUnitInfoById(@RequestParam Integer uiId,
                                                  @RequestParam Integer uiLevel){
        return unitInfoService.getUnitInfoById(uiId,uiLevel);
    }
}
